<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      /* 
     ①确定dp数组和下标含义
     n==2 最大为2  n=3  最大为1*2
     dp[2]=2  dp[3]=2  dp[4]最大为2*2=4
     dp[i]表示i个整数的最大乘积为dp[i]

     ②状态转移方程
     因为需要进行拆分，所以我们需要额外引入一个变量j，j从1开始且小于i
     dp[i]=j*(i-j),但是i-j还是可以拆分的，因此可以转换为dp[i]=j*dp[i-j]
     但是也可以不再继续拆分，只需要比较最大值即可
     dp[i]=Math.max(dp[i],j*(i-j),j*dp[i-j])
    
     ③初始化dp数组
     i从2开始 dp[2]=1 
        
      
      */
      var integerBreak = function (n) {
        let dp = new Array(n + 1).fill(0);
        dp[0] = 1;
        dp[1] = 1;
        dp[2] = 1;
        for (let i = 3; i < dp.length; i++) {
          for (let j = 1; k < i; j++) {
            dp[i] = Math.max(dp[i], j * dp[i - j], j * (i - j));
          }
        }
        return dp[n];
      };
    </script>
  </body>
</html>
